﻿namespace SugarTank.Mobile.Managers.Contracts
{
    using System;
    using CommonTypes.Phone;
    using Microsoft.Phone.Tasks;

    public interface ILauncherManager
    {
        /// <summary>
        /// Composes the email.
        /// </summary>
        /// <param name="email">The email.</param>
        void ComposeEmail(Email email);

        /// <summary>
        /// Composes the SMS.
        /// </summary>
        /// <param name="sms">The SMS.</param>
        void ComposeSms(Sms sms);

        /// <summary>
        /// Makes the call.
        /// </summary>
        /// <param name="phoneNumber">The phone call.</param>
        void MakeCall(PhoneNumber phoneNumber);

        /// <summary>
        /// Launches the web browser.
        /// </summary>
        /// <param name="uri">The URI.</param>
        void LaunchWebBrowser(Uri uri);

        /// <summary>
        /// Launches the search.
        /// </summary>
        /// <param name="query">The query.</param>
        void LaunchSearch(string query);

        /// <summary>
        /// Shows the market place details.
        /// </summary>
        /// <param name="contentId">The content id.</param>
        void LaunchMarketplaceDetails(string contentId);

        /// <summary>
        /// Shows the market place hub.
        /// </summary>
        /// <param name="contentType">Type of the content.</param>
        void LaunchMarketplaceHub(MarketplaceContentType contentType);

        /// <summary>
        /// Shows the marketplace review.
        /// </summary>
        void LaunchMarketplaceReview();

        /// <summary>
        /// Searches the marketplace.
        /// </summary>
        void SearchMarketplace(MarketplaceSearch search);
    }
}